package edu.algo3.algoThief.domain;

import java.util.ArrayList;
import edu.algo3.algoThief.dao.Repositorio;

public abstract class ObjetoRobado {

    private String descripcion;

    private String nombre;

    private String valor;

    public abstract ArrayList<Ciudad> definirEstrategiaDeEscape();
    public abstract ArrayList<Ciudad> definirEstrategiaDeEscape(String jugadorNombre);

    // getters

    public String getDescripcion() {

        return descripcion;
    }

    public String getNombre() {

        return nombre;
    }

    public String getValor() {

        return valor;
    }

    // setters

    protected void definirNombre() {

        ArrayList<String> listaDeObjetosPosibles =
            Repositorio.getObjetos(valor);
        int numeroDeObjeto =
            (int) (Math.random() * listaDeObjetosPosibles.size());
        nombre = listaDeObjetosPosibles.get(numeroDeObjeto);
    }
    
    protected void definirNombre(String jugadorNombre){
    	nombre = Repositorio.cargarObjetoRobadoNombre(jugadorNombre);
    }

    protected void definirDescripcion() {

        this.descripcion = Repositorio.getObjetoDescripcion(nombre);
    }

    protected void definirValor(String valor) {

        this.valor = valor;
    }
    
    protected ArrayList<Ciudad> definirEstrategiaDeEscape(int largoDeRutaDeEscape)
    {
        ArrayList<Ciudad> listaDeCiudades = new ArrayList<Ciudad>();
        ArrayList<String> paisesPosibles = Repositorio.getTodosLosPaises();

        for (int i = 1; i <= largoDeRutaDeEscape; i++) {
            int indiceDelPais = (int) (Math.random() * paisesPosibles.size());
            listaDeCiudades.add(new Ciudad(paisesPosibles.get(indiceDelPais)));
            paisesPosibles.remove(indiceDelPais);
        }
        return listaDeCiudades;
    }
    
    protected ArrayList<Ciudad> definirEstrategiaDeEscape(int largoDeRutaDeEscape, String nombreJugador)
    {
        ArrayList<Ciudad> listaDeCiudades = new ArrayList<Ciudad>();
        ArrayList<String> paisesDeEscape = Repositorio.cargarPaisesDeEscape(nombreJugador);

        for (int i = 1; i <= paisesDeEscape.size(); i++) {
            listaDeCiudades.add(new Ciudad(paisesDeEscape.get(i-1)));
        }
        return listaDeCiudades;
    }
    
    

}
